package com.hx.validator;

import javax.validation.Constraint;
import javax.validation.Payload;
import java.lang.annotation.Documented;
import java.lang.annotation.Retention;
import java.lang.annotation.Target;

import static java.lang.annotation.ElementType.*;
import static java.lang.annotation.RetentionPolicy.RUNTIME;

@Documented
@Constraint(validatedBy = {StrContainConstraintValidator.class})
@Target({METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER, TYPE_USE})
@Retention(RUNTIME)
public @interface StrContainValue {
    String message() default "参数不符合要求";

    Class<?>[] groups() default {};

    Class<? extends Payload>[] payload() default {};

    String key() default "";

    MatchType matchType() default MatchType.CODE;

    Condition condition() default Condition.CONTAIN;

    enum MatchType {
        CODE, NAME;
    }

    enum Condition {
        CONTAIN, UNCONTAIN;
    }
}

